﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;

namespace Sistema_Totem.Vista.Clientes
{
    public partial class ModificarCliente : System.Web.UI.Page
    {
        Cliente miCliente = new Cliente();
        protected void Page_Load(object sender, EventArgs e)
        {

            ////if (Session["tipo_usuario"].ToString() != "Administrador")
            ////{
            ////    Response.Redirect("Login1.aspx");
            ////}

            if (!IsPostBack)
            {
                string miRif = (string)(Session["RIF"]);
                MostrarCliente(miRif);
            }
   
        }

        /// <summary>
        /// metodo que consulta toda la informacion de cliente
        /// </summary>
        /// <param name="miRif">se busca la informacion por su numero de rif</param>
        private void MostrarCliente(String miRif)
        {
            Cliente resultado = null;
            try
            {
                resultado = miCliente.ConsultarDetallesCliente(miRif);
                cargarDatosCliente(resultado);
            }
            catch (Exception error)
            {
                MensajeDeTransaccion.Text = error.Message;
                MensajeDeTransaccion.CssClass = "transaccionFallida";
                MensajeDeTransaccion.Visible = true;
            }
        }
        
        /// <summary>
        /// metodo que asigna los valores a los campos en la pantalla
        /// </summary>
        /// <param name="miCliente">el cliente buscado</param>
        public void cargarDatosCliente(Cliente miCliente)
        {

            this.rifCliente.Text = miCliente.Rif;
            this.nombreCliente.Text = miCliente.Nombre;
            this.telefonoCliente.Text = miCliente.Telefono;
            this.correoCliente.Text = miCliente.Correo;
            this.direccionCliente.Text = miCliente.Direccion;
            this.estatusCliente.Text = miCliente.Estatus;
            this.logoCliente.Text = miCliente.Logo;
            this.cuadroLogo.ImageUrl = "~/Styles/Logos/" + miCliente.Logo;
        }

        /// <summary>
        /// Metodo que envia toda la informacion nueva y vieja a guardar en la BD
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"> se envian los vales que esten al momento de hacer clin en los respectivos campos</param>
        protected void ActualizarCliente_Click(object sender, EventArgs e)
        {
            try
            {
                miCliente.Rif = this.rifCliente.Text;
                miCliente.Nombre = this.nombreCliente.Text;
                miCliente.Telefono = this.telefonoCliente.Text;
                miCliente.Correo = this.correoCliente.Text;
                miCliente.Direccion = this.direccionCliente.Text;
                miCliente.Estatus = this.estatusCliente.SelectedItem.Text;
                //si hay un archivo nuebo
                if (logoNuevo.PostedFile != null)
                {
                        String nombreArchivo = logoNuevo.PostedFile.FileName;
                        logoNuevo.PostedFile.SaveAs(Server.MapPath("~//Styles/Logos/") + nombreArchivo);
                        miCliente.Logo = nombreArchivo;

                }
                //si no cambio de foto
                else 
                {
                    miCliente.Logo = this.logoCliente.Text;
                }

                MensajeDeTransaccion.Text = miCliente.ActualizarDatosCliente(this.miCliente);
                MensajeDeTransaccion.CssClass = "transaccionExitosa";
                MensajeDeTransaccion.Visible = true;
                this.Actualizar.Visible = false;
     
            }
            //en caso de una excepcion
            catch (Exception error)
            {
                MensajeDeTransaccion.Text = error.Message;
                MensajeDeTransaccion.CssClass = "transaccionFallida";
                MensajeDeTransaccion.Visible = true;
            }
        }

        //metodo para retornar a la pantalla previa
        protected void Volver_Click(object sender, EventArgs e)
        {
            Response.Redirect("../Clientes/ListarModificarCliente.aspx");
        }
    }
}